package com.sld.concrete.vehicle.mapper;

import java.util.List;

import com.sld.concrete.algorithm.vo.WorkDataInfo;
import com.sld.concrete.monitor.dto.DeptVehicleSequenceDTO;
import com.sld.concrete.monitor.dto.RecDevWorkSequenceExtend;
import com.sld.concrete.monitor.dto.UnRegisterWorkSequenceDTO;
import com.sld.concrete.vehicle.domain.RecDevWorkSequence;
import com.sld.concrete.vehicle.dto.RecDevWorkSequenceStatDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 工作序列Mapper接口
 * 
 * @author topviewers
 * @date 2022-04-23
 */
public interface RecDevWorkSequenceMapper 
{
    /**
     * 查询工作序列
     * 
     * @param id 工作序列主键
     * @return 工作序列
     */
    public RecDevWorkSequence selectRecDevWorkSequenceById(Long id);

    /**
     * 查询工作序列列表
     * 
     * @param recDevWorkSequence 工作序列
     * @return 工作序列集合
     */
    public List<RecDevWorkSequence> selectRecDevWorkSequenceList(RecDevWorkSequence recDevWorkSequence);

    /**
     * 新增工作序列
     * 
     * @param recDevWorkSequence 工作序列
     * @return 结果
     */
    public int insertRecDevWorkSequence(RecDevWorkSequence recDevWorkSequence);

    /**
     * 修改工作序列
     * 
     * @param recDevWorkSequence 工作序列
     * @return 结果
     */
    public int updateRecDevWorkSequence(RecDevWorkSequence recDevWorkSequence);

    /**
     * 删除工作序列
     * 
     * @param id 工作序列主键
     * @return 结果
     */
    public int deleteRecDevWorkSequenceById(Long id);

    /**
     * 批量删除工作序列
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRecDevWorkSequenceByIds(String[] ids);

    RecDevWorkSequence queryRunningRecord(@Param("plateNo") String plateNo);

    List<WorkDataInfo> queryUnbindSequence(WorkDataInfo workData);

    /**
     * 查询符合指定条件的记录数
     * @param plateNos
     * @param beginTime
     * @param endTime
     * @return
     */
    public int queryTaskCount(@Param("plateNos")String plateNos, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
    /**
     * 查询符合条件的任务统计数据
     * @param plateNos
     * @return
     */
    public RecDevWorkSequenceStatDTO queryTaskStat(@Param("plateNos")String plateNos, @Param("beginTime")String beginTime, @Param("endTime")String endTime);

    /**
     * 查询未注册的记录（registerId字段为null）
     * @param plateNos
     * @return
     */
    public List<UnRegisterWorkSequenceDTO> queryUnRegister(@Param("plateNos")String plateNos);

    /**
     * 查询指定时间内，有任务的部门统计信息
     * @param plateNos
     * @param beginTime
     * @param endTime
     * @return
     */
    public List<DeptVehicleSequenceDTO> queryDeptHasSequenceTaskWithinTime(@Param("plateNos")String plateNos, @Param("beginTime")String beginTime, @Param("endTime")String endTime);

    /**
     * 根据车牌查询其所属公司信息
     * @param plateNos
     * @return
     */
    public List<DeptVehicleSequenceDTO> queryDeptByPlateNos(@Param("plateNos")String plateNos);

    /**
     * 查询指定车牌，在指定时间范围内的最后一个sequence信息，以及关联的标定信息、计算结果信息
     * @param plateNo
     * @param beginTime
     * @param endTime
     * @return
     */
    public RecDevWorkSequenceExtend queryLastWordStatDataByPlateNo(@Param("plateNo")String plateNo, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
}
